<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>冒泡排序</title>
  </head>
  <body>
    <script>
      /*
        冒泡排序原理：
        1、冒泡排序：是一种算法，把数据按照(从小到大或从大到小)的顺序排列
        2、需要用双重循环，外层 for 循环管趟数，趟数就是 arr.length - 1
        3、里层 for 循环管交换次数，次数就是 arr.length - i - 1
        4、交换两个变量
      */

      // 版本1：直接使用
      // var arr = [3, 19, 9, 45, 178, 6, 70, 33];
      // console.log('原数组：' + arr);
      // for (var i = 0; i <= arr.length - 1; i++) {
      //   for (var j = 0; j <= arr.length - i - 1; j++) {
      //     if (arr[j] > arr[j + 1]) {
      //       var temp = arr[j];
      //       arr[j] = arr[j + 1];
      //       arr[j + 1] = temp;
      //     }
      //   }
      // }
      // console.log('冒泡排序后：' + arr);

      // 版本2：用函数封装
      function mp(arr) {
        for (var i = 0; i <= arr.length - 1; i++) {
          for (var j = 0; j <= arr.length - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
              var temp = arr[j];
              arr[j] = arr[j + 1];
              arr[j + 1] = temp;
            }
          }
        }
        return arr;
      }
      console.log(mp([1, 50, 100, 33, 2, 99, 888]));
    </script>
  </body>
</html>
